#target illustrator
(function () {
    if (app.documents.length === 0) { alert("先打开文档并选择对象"); return; }
    var doc = app.activeDocument;
    if (!doc.selection || doc.selection.length === 0) { alert("请先选择对象"); return; }

    // 兼容旧版的 trim
    function sTrim(s){ return (s||"").replace(/^\s+|\s+$/g,""); }

    // 模式：1=拐点(x=右端x,y=左端y)；2=拐点(x=左端x,y=右端y)
    var ans = prompt("选择拐点模式：\n1) x=右端x，y=左端y\n2) x=左端x，y=右端y","1","直角折线模式");
    if (ans===null) return;
    ans = sTrim(String(ans));
    if (ans!=="1" && ans!=="2"){ alert("请输入 1 或 2"); return; }
    var mode = (ans==="1") ? 0 : 1;

    // 收集：开放且仅2点的 PathItem（含组/复合路径内）
    var items = [];
    function collect(it){
        if (!it) return;
        var t = it.typename;
        if (t==="PathItem"){
            if (!it.closed && it.pathPoints.length===2) items.push(it);
        } else if (t==="GroupItem"){
            for (var i=0;i<it.pageItems.length;i++) collect(it.pageItems[i]);
        } else if (t==="CompoundPathItem"){
            for (var j=0;j<it.pathItems.length;j++) collect(it.pathItems[j]);
        }
    }
    for (var k=0;k<doc.selection.length;k++) collect(doc.selection[k]);
    if (items.length===0){ alert("未找到开放且仅2点的路径（含群组/复合路径内）。"); return; }

    // 转为直角折线
    for (var n=0;n<items.length;n++){
        var p = items[n];
        var a0 = p.pathPoints[0].anchor; // [x,y]
        var a1 = p.pathPoints[1].anchor;

        // 判定左右端点（按 x）
        var leftIs0 = (a0[0] <= a1[0]);
        var leftX   = leftIs0 ? a0[0] : a1[0];
        var leftY   = leftIs0 ? a0[1] : a1[1];
        var rightX  = leftIs0 ? a1[0] : a0[0];
        var rightY  = leftIs0 ? a1[1] : a0[1];

        // 拐点
        var mid = (mode===0) ? [rightX, leftY] : [leftX, rightY];

        // 点0 -> 拐点 -> 点1
        p.setEntirePath([[a0[0],a0[1]], mid, [a1[0],a1[1]]]);

        // 三点设为直角点
        for (var m=0;m<p.pathPoints.length;m++){
            var pt = p.pathPoints[m];
            pt.leftDirection = pt.rightDirection = pt.anchor;
            pt.pointType = PointType.CORNER;
        }
    }

    // 选中刚处理的对象并重置定界框
    doc.selection = items;
    try { app.executeMenuCommand("AI Reset Bounding Box"); } catch(e){}

    // 若需要强制刷新：app.redraw();
})();
